// Copyright (c) 2022-present, Shanghai Yunxi Technology Co, Ltd. All rights reserved.
//
// This software (KWDB) is licensed under Mulan PSL v2.
// You can use this software according to the terms and conditions of the Mulan PSL v2.
// You may obtain a copy of Mulan PSL v2 at:
//          http://license.coscl.org.cn/MulanPSL2
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
// EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
// MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
// See the Mulan PSL v2 for more details.

package sql

import (
	"bytes"
	"context"
	"strconv"
	"time"

	"gitee.com/kwbasedb/kwbase/pkg/jobs"
	"gitee.com/kwbasedb/kwbase/pkg/jobs/jobspb"
	"gitee.com/kwbasedb/kwbase/pkg/kv"
	"gitee.com/kwbasedb/kwbase/pkg/roachpb"
	"gitee.com/kwbasedb/kwbase/pkg/scheduledjobs"
	"gitee.com/kwbasedb/kwbase/pkg/security"
	"gitee.com/kwbasedb/kwbase/pkg/settings"
	"gitee.com/kwbasedb/kwbase/pkg/sql/mutations"
	"gitee.com/kwbasedb/kwbase/pkg/sql/opt/memo"
	"gitee.com/kwbasedb/kwbase/pkg/sql/row"
	"gitee.com/kwbasedb/kwbase/pkg/sql/sem/builtins"
	"gitee.com/kwbasedb/kwbase/pkg/sql/sem/tree"
	"gitee.com/kwbasedb/kwbase/pkg/sql/sqlbase"
	"gitee.com/kwbasedb/kwbase/pkg/sql/sqlutil"
	"gitee.com/kwbasedb/kwbase/pkg/sql/types"
	"gitee.com/kwbasedb/kwbase/pkg/tse"
	"gitee.com/kwbasedb/kwbase/pkg/util/hlc"
	"gitee.com/kwbasedb/kwbase/pkg/util/log"
	"gitee.com/kwbasedb/kwbase/pkg/util/protoutil"
	"gitee.com/kwbasedb/kwbase/pkg/util/timeutil"
	"github.com/cockroachdb/errors"
	"github.com/gorhill/cronexpr"
	"github.com/lib/pq/oid"
)

// WriteKWDBDesc writes rows in batch, max batch size is 10000
func WriteKWDBDesc(
	ctx context.Context,
	txn *kv.Txn,
	systemTable sqlbase.TableDescriptor,
	rows []tree.Datums,
	overWrite bool, // action flag on pk conflict, true for overwrite, false for raising error
) error {
	// build Inserter based on systemTable, make sure columns align with rows from input
	imTable := sqlbase.NewImmutableTableDescriptor(systemTable)
	ri, err := row.MakeKWDBInserter(imTable, systemTable.Columns)
	if err != nil {
		return err
	}
	runTxn := func(ctx context.Context, b *kv.Batch) error {
		if runErr := txn.Run(ctx, b); runErr != nil {
			if _, ok := runErr.(*roachpb.ConditionFailedError); ok {
				return row.ConvertBatchError(ctx, imTable, b)
			}
			return runErr
		}
		return nil
	}

	b := txn.NewBatch()
	for i := range rows {
		values := rows[i]
		rowCount := i + 1
		if rowCount%mutations.MaxBatchSize() == 0 {
			if err := runTxn(ctx, b); err != nil {
				return err
			}
			b = txn.NewBatch()
		}
		if len(values) != len(systemTable.Columns) {
			return errors.Errorf("Table %s: got %d values but expected %d", systemTable.Name, len(values), len(ri.InsertCols))
		}
		// LimitValueWidth checking
		if err := enforceLocalColumnConstraints(values, ri.InsertCols); err != nil {
			return err
		}
		// Queue the rowValue in the KV batch.
		if err := ri.InsertRow(ctx, b, values, overWrite, row.SkipFKs, false, &kv.Txn{}); err != nil {
			return err
		}
	}
	if err := runTxn(ctx, b); err != nil {
		return err
	}
	return nil
}

// InitInstDescriptor inits instantce table descriptor.
func InitInstDescriptor(
	childID, stbID sqlbase.ID, instName, dbName, tmplName string, creationTime hlc.Timestamp,
) sqlbase.InstNameSpace {
	instNamespace := sqlbase.InstNameSpace{
		InstTableID: childID,
		DBName:      dbName,
		InstName:    instName,
		TmplTableID: stbID,
		ChildDesc: sqlbase.ChildDesc{
			STableName:       tmplName,
			ModificationTime: creationTime,
		},
	}
	return instNamespace
}

// writeInstTableMeta writes KWDBTagValue descriptor to table of system.
func writeInstTableMeta(
	ctx context.Context, txn *kv.Txn, instNames []sqlbase.InstNameSpace, overWrite bool,
) error {
	var rows []tree.Datums
	var err error
	for _, name := range instNames {
		name.Version++
		name.ModificationTime, err = txn.CommitTimestamp()
		if err != nil {
			return err
		}
		childDesc, err := protoutil.Marshal(&name.ChildDesc)
		if err != nil {
			return err
		}
		row := tree.Datums{
			tree.NewDInt(tree.DInt(name.InstTableID)),
			tree.NewDString(name.DBName),
			tree.NewDString(name.InstName),
			tree.NewDInt(tree.DInt(name.TmplTableID)),
			tree.NewDBytes(tree.DBytes(childDesc)),
		}
		rows = append(rows, row)
	}
	// system.kwdb_ts_table
	if err := WriteKWDBDesc(ctx, txn, sqlbase.KWDBTsTableTable, rows, overWrite); err != nil {
		return err
	}
	return nil
}

// DropInstanceTable deletes instance table from system.kwdb_ts_table.
func DropInstanceTable(
	ctx context.Context, txn *kv.Txn, instID sqlbase.ID, dbName string, instName string,
) error {
	b := txn.NewBatch()
	var idxVal []tree.Datum
	idxVal = append(idxVal, tree.NewDString(dbName), tree.NewDString(instName))
	tdKeys, err := sqlbase.MakeDropKWDBMetadataKeyInt(sqlbase.KWDBTsTableTable, []uint64{uint64(instID)}, idxVal)
	if err != nil {
		return err
	}
	for _, key := range tdKeys {
		b.Del(key)
	}
	return txn.Run(ctx, b)
}

// flag that expr can use position
const (
	PosWhere           = 1 << 0
	PosProject         = 1 << 1
	PosGroup           = 1 << 2
	PosOrder           = 1 << 3
	PosWhereAndProject = PosWhere + PosProject
	PosWhereAndGroup   = PosWhere + PosGroup
	PosAll             = PosWhere + PosProject + PosGroup + PosOrder
)

// flag that expr can contain elements
const (
	TypConst           = 1 << 0
	TypColumn          = 1 << 1
	TypBinary          = 1 << 2
	TypCompare         = 1 << 3
	TypAgg             = 1 << 4
	TypeConstAndColumn = TypConst + TypColumn
	TypALL             = TypConst + TypColumn + TypBinary + TypCompare + TypAgg
)

// InitWhiteList Inits BoWhiteList  Limit Order by Having Group by Select list Where
var InitWhiteList = []sqlbase.WhiteList{
	{"+", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	// There is an accuracy issue with the operation of floating-point numbers, so we will not push it down for now
	// e.g. 0.1-20=18.899999999999999
	//{"+", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"+", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"+", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"+", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"+", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},

	{"-", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"-", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"-", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"-", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"-", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"-", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},

	{"*", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"*", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"*", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"*", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"*", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"*", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"*", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"*", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	//{"*", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},
	// In kwbase, the return type of the int type division operation is decimal, and the return type of the int type division operation is int.
	// Since there is no decimal type, the division operation is not pushed down

	{"/", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"/", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"//", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"//", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"#", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"#", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"^", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"^", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"|", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"|", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"&", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"&", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	// not support "|" , "&" and "^" with different type
	//{"|", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"&", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"^", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"%", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"<<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},

	{">>", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">>", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">>", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">>", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">>", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">>", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">>", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">>", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">>", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	// string family for =
	{"=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"=", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"<", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	// string family for <
	{"<", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"<=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	// string family for <=
	{"<=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"<=", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},

	{">", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	// string family for >
	{">", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},

	{">=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	// string family for >=
	{">=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{">=", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"!=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_interval)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_interval), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},

	// string family for !=
	{"!=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"!=", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"IN", 0, []uint32{}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_float4)}, PosWhere, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},
	// string family for IN
	{"IN", 1, []uint32{uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"IN", 1, []uint32{uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"NOT IN", 0, []uint32{}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_numeric), uint32(oid.T_numeric)}, PosWhereAndProject, true, TypeConstAndColumn},
	// string family for NOT IN
	{"NOT IN", 1, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"NOT IN", 1, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},

	// string family for like
	{"like", 0, []uint32{}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"LIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"NOT LIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},

	// string family for ilike
	{"ilike", 0, []uint32{}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},

	{"NOT ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"NOT ILIKE", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhere, true, TypeConstAndColumn},

	{"~", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"~", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"~", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"~", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"~", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"~", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"~", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"~", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"~", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"!~", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},

	{"~*", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"~*", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"~*", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"~*", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"~*", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"~*", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"~*", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"~*", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"~*", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"!~*", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},

	{"cast", 1, []uint32{uint32(oid.T_int8)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(oid.T_int2)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(oid.T_int4)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(oid.T_float8)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(oid.T_timestamp)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(oid.T_timestamptz)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(oid.T_bpchar)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(types.T_nchar)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(types.T_nvarchar)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(oid.T_varchar)}, PosProject, true, TypeConstAndColumn},
	{"cast", 1, []uint32{uint32(oid.T_bool)}, PosProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_anyelement)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"coalesce", 1, []uint32{uint32(oid.T_anyelement)}, PosWhereAndProject, true, TypeConstAndColumn},
	// char builtin
	{"chr", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"chr", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"chr", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"decode", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"decode", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"char_length", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"char_length", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"char_length", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"char_length", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"char_length", 1, []uint32{uint32(oid.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"char_length", 1, []uint32{uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"get_bit", 2, []uint32{uint32(oid.T_varbytea), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"initcap", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"initcap", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"initcap", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"initcap", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"initcap", 1, []uint32{uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"character_length", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"character_length", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"character_length", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"character_length", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"character_length", 1, []uint32{uint32(oid.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"character_length", 1, []uint32{uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"bit_length", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"bit_length", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"bit_length", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"bit_length", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"bit_length", 1, []uint32{uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"bit_length", 1, []uint32{uint32(oid.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"octet_length", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"octet_length", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"octet_length", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"octet_length", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"octet_length", 1, []uint32{uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"octet_length", 1, []uint32{uint32(oid.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"substr", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	{"substr", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	{"substring", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	{"substring", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	{"cast_check_ts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhere, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"concat", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},

	{"left", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"left", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},

	{"length", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"length", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"length", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"length", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"length", 1, []uint32{uint32(oid.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"length", 1, []uint32{uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},

	{"lower", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lower", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lower", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lower", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},

	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int2), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int2), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int4), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int4), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int8), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int8), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"lpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},

	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int2), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int2), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int4), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int4), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int8), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int8), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rpad", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},

	{"ltrim", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"ltrim", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"ltrim", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"ltrim", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},

	{"right", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"right", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"rtrim", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"rtrim", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"rtrim", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"rtrim", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},

	{"upper", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"upper", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"upper", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"upper", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},

	// date builtin
	// {"time_bucket", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"time_bucket", 2, []uint32{uint32(oid.T_timestamptz), uint32(types.T_nchar)}, PosAll, true, TypALL},
	{"time_bucket", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_varchar)}, PosAll, true, TypALL},
	{"time_bucket", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_text)}, PosAll, true, TypALL},
	{"date_trunc", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	{"date_trunc", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	{"date_trunc", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	{"date_trunc", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosWhere, true, TypeConstAndColumn},
	{"date_trunc", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosWhere, true, TypeConstAndColumn},
	{"date_trunc", 2, []uint32{uint32(oid.T_text), uint32(oid.T_timestamp)}, PosWhere, true, TypeConstAndColumn},
	{"date_trunc", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamp)}, PosWhere, true, TypeConstAndColumn},
	{"date_trunc", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamp)}, PosWhere, true, TypeConstAndColumn},
	//{"date_trunc", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	{"date_trunc", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypALL},
	{"date_trunc", 2, []uint32{uint32(oid.T_text), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypALL},
	{"extract", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypALL},
	{"extract", 2, []uint32{uint32(oid.T_text), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypALL},
	{"current_timestamp", 0, []uint32{}, PosWhereAndProject, true, TypALL},
	{"current_timestamp", 1, []uint32{uint32(oid.T_int8)}, PosWhereAndProject, true, TypALL},
	{"current_date", 0, []uint32{}, PosWhereAndProject, true, TypeConstAndColumn},
	{"timeofday", 0, []uint32{}, PosWhereAndProject, true, TypALL},
	{"localtimestamp", 0, []uint32{}, PosWhereAndProject, true, TypALL},
	{"age", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypALL},
	{"age", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypALL},
	{"experimental_strftime", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_text)}, PosWhereAndProject, true, TypALL},
	{"experimental_strftime", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypALL},
	{"experimental_strftime", 2, []uint32{uint32(oid.T_timestamptz), uint32(types.T_nchar)}, PosWhereAndProject, true, TypALL},
	//{"adddate", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"addtime", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"curdate", 0, []uint32{}, PosWhere, true, TypeConstAndColumn},
	//{"datediff", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"date_format", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"date_format", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"date", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"date", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"day", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"dayofmonth", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"dayofweek", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"hour", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"hour", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"hour", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"minute", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"minute", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"minute", 1, []uint32{uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"month", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"month", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"month", 1, []uint32{uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"second", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"second", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"second", 1, []uint32{uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"week", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"week", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"week", 1, []uint32{uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"weekday", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"weekday", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"weekday", 1, []uint32{uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"year", 1, []uint32{uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"year", 1, []uint32{uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"year", 1, []uint32{uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	{"now", 0, []uint32{}, PosAll, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosWhere, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhere, true, TypeConstAndColumn},
	//{"subtime", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosWhere, true, TypeConstAndColumn},
	{"time_window_end", 1, []uint32{uint32(oid.T_timestamptz)}, PosProject, true, TypALL},
	{"time_window_start", 1, []uint32{uint32(oid.T_timestamptz)}, PosProject, true, TypALL},

	// math builtin
	{"ceil", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"ceil", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"ceil", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"ceil", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"ceil", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"ceiling", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"ceiling", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"ceiling", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"ceiling", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"ceiling", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"cos", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"cos", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"floor", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"floor", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"floor", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"floor", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"floor", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"pi", 0, []uint32{}, PosAll, true, TypeConstAndColumn},
	{"tan", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"tan", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"pow", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"power", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"round", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"round", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"round", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"round", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"round", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"round", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"round", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"round", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"sin", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"sin", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"sqrt", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"sqrt", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	// aggregate builtin
	{"avg", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"avg", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"avg", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"avg", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"avg", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	//{"corr", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_bool)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"count", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"count_rows", 0, []uint32{}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"firstts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"first_row_ts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},

	{"last", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},

	{"last", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},

	{"lastts", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},

	{"lastts", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_varbytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},

	{"lastts", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"lastts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},

	{"last_row", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},

	{"last_row_ts", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"last_row_ts", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_bool)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"max", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_bool)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"min", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	// {"stddev_samp", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	// {"stddev_samp", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	// {"stddev_samp", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	// {"stddev_samp", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	// {"stddev_samp", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"sum", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"sum", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"sum", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"sum", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"sum", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"twa", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"elapsed", 1, []uint32{uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"elapsed", 1, []uint32{uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	{"elapsed", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_interval)}, PosAll, true, TypeConstAndColumn},
	{"elapsed", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_interval)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},

	{"any_not_null", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_timestamp)}, PosAll, true, TypeConstAndColumn},
	{"any_not_null", 1, []uint32{uint32(oid.T_timestamptz)}, PosAll, true, TypeConstAndColumn},
	// {"variance", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	// {"variance", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	// {"variance", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	// {"variance", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	// {"variance", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"log", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"log", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"log", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"log", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"log", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"log", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"mod", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"isnan", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"isnan", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"ln", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"ln", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"radians", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"radians", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"random", 0, []uint32{}, PosAll, true, TypeConstAndColumn},
	{"sign", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"sign", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"sign", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"sign", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"sign", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"trunc", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"trunc", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"width_bucket", 4, []uint32{uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"agg-distinct", 1, []uint32{uint32(oid.T_numeric)}, PosAll, true, TypeConstAndColumn},
	{"agg-distinct", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"agg-distinct", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"agg-distinct", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"agg-distinct", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"agg-distinct", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"abs", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"abs", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"abs", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"abs", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"abs", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"acos", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"acos", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"asin", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"asin", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"atan", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"atan", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"atan2", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"atan2", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"atan2", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"atan2", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"cbrt", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"cbrt", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"cot", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"cot", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"degrees", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"degrees", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"div", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"exp", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"exp", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32c", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"crc32ieee", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv32a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"fnv64a", 3, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int2), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int4), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_int8), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float4), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_float8), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bool), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_text), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bpchar), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nchar), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_varchar), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_nvarchar), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_bytea), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(types.T_varbytea), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_unknown)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"case", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_anyelement), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_text), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_bytea), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int2)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_int8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_float4)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_float8)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bool)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_text)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bpchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(types.T_nchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_varchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(types.T_nvarchar)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(types.T_varbytea)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamp)}, PosWhereAndProject, true, TypeConstAndColumn},
	{"when", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_timestamptz)}, PosWhereAndProject, true, TypeConstAndColumn},

	{"state_window", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_float4)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_float8)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_bool)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(oid.T_bytea)}, PosAll, true, TypeConstAndColumn},
	{"state_window", 1, []uint32{uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},

	{"session_window", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamp), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamp), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_bytea)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamp), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},

	{"session_window", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bpchar)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamptz), uint32(types.T_nchar)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_varchar)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamptz), uint32(types.T_nvarchar)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_bytea)}, PosAll, true, TypeConstAndColumn},
	{"session_window", 2, []uint32{uint32(oid.T_timestamptz), uint32(types.T_varbytea)}, PosAll, true, TypeConstAndColumn},

	{"event_window", 2, []uint32{uint32(oid.T_bool), uint32(oid.T_bool)}, PosAll, true, TypeConstAndColumn},

	{"count_window", 1, []uint32{uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 1, []uint32{uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 1, []uint32{uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int2)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int4)}, PosAll, true, TypeConstAndColumn},
	{"count_window", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_int8)}, PosAll, true, TypeConstAndColumn},

	{"time_window", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"time_window", 3, []uint32{uint32(oid.T_timestamp), uint32(oid.T_text), uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"time_window", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},
	{"time_window", 3, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_text), uint32(oid.T_text)}, PosAll, true, TypeConstAndColumn},

	// is null
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_text), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS NOT DISTINCT FROM", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},

	// is not null
	{"IS DISTINCT FROM", 2, []uint32{uint32(types.T_varbytea), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_int2), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_int4), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_int8), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_float4), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_float8), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_text), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_bpchar), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(types.T_nchar), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_varchar), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(types.T_nvarchar), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_timestamptz), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
	{"IS DISTINCT FROM", 2, []uint32{uint32(oid.T_timestamp), uint32(oid.T_unknown)}, PosWhere, true, TypeConstAndColumn},
}

// generate a hash value using the name and parameters of whitelist to compare whether the whitelist is consistent.
func rowToHashKey(row tree.Datums) uint32 {
	var buffer bytes.Buffer
	buffer.WriteString(string(tree.MustBeDString(row[0])))
	for _, t := range tree.MustBeDArray(row[1]).Array {
		buffer.WriteString(strconv.Itoa(int(tree.MustBeDInt(t))))
	}
	return memo.StringHash(buffer.String())
}

func deleteWhiteList(ctx context.Context, txn *kv.Txn, ie sqlutil.InternalExecutor) error {
	const deleteStmt = `delete from system.bo_black_list`
	_, err := ie.Exec(
		ctx, `delete bo_black_list`, txn, deleteStmt)
	return err
}

// WriteWhiteListDesc writes bo_white_list
func WriteWhiteListDesc(
	ctx context.Context,
	txn *kv.Txn,
	ie sqlutil.InternalExecutor,
	nodeID roachpb.NodeID,
	whiteList []sqlbase.WhiteList,
	overWrite bool,
) error {
	const selectStmt = `select name, arg_type, position, enabled, arg_opt from system.bo_black_list`
	resRows, err := ie.Query(
		ctx, `select white_list`, txn, selectStmt)
	if err != nil {
		return err
	}
	insertFlag := true
	if !overWrite && resRows != nil {
		// we add whiteList or delete whiteList
		if len(resRows) != len(whiteList) {
			if err := deleteWhiteList(ctx, txn, ie); err != nil {
				return err
			}
		} else {
			// the number of whitelist is equal to the number of query records
			whiteListMap := make(map[uint32]struct{}, 0)
			for _, row := range resRows {
				whiteListMap[rowToHashKey(row)] = struct{}{}
			}
			for _, b := range whiteList {
				argType := tree.NewDArray(types.Int2)
				var argTypeArray tree.Datums
				for _, val := range b.ArgType {
					argTypeArray = append(argTypeArray, tree.NewDInt(tree.DInt(val)))
				}
				argType.Array = argTypeArray
				key := rowToHashKey(tree.Datums{tree.NewDString(b.Name), argType})
				if _, ok := whiteListMap[key]; !ok {
					whiteListMap[key] = struct{}{}
				}
			}

			// we write the system table whitelist and the local whitelist into whiteListMap,
			// and compare the count of local whitelist.
			// if they are not equal, it indicates that the local whitelist has been modified.
			// eg:
			//	init local whiteList: 1,2,3,4,5
			// 	init system table whiteList: 1,2,3,4,5
			// 	update local whiteList: 1,2,3,4,6( delete 5, add 6, count has not changed.)
			// 	write system table whiteList into whiteListMap: 1,2,3,4,5
			// 	write local whiteList into whiteListMap: 1,2,3,4,5,6
			//  count of whiteListMap > count of local whiteList
			if len(whiteListMap) != len(whiteList) {
				if err := deleteWhiteList(ctx, txn, ie); err != nil {
					return err
				}
			} else {
				insertFlag = false
			}
		}
	}

	if insertFlag {
		// rewrite the whitelist.
		var rows []tree.Datums
		for _, b := range whiteList {
			argType := tree.NewDArray(types.Int2)
			var argTypeArray tree.Datums
			for _, val := range b.ArgType {
				argTypeArray = append(argTypeArray, tree.NewDInt(tree.DInt(val)))
			}
			argType.Array = argTypeArray
			// generate rowID
			rowID := builtins.GenerateUniqueInt(nodeID)
			row := tree.Datums{
				tree.NewDInt(rowID),
				tree.NewDString(b.Name),
				tree.NewDInt(tree.DInt(b.ArgNum)),
				argType,
				tree.NewDInt(tree.DInt(b.Position)),
				tree.MakeDBool(tree.DBool(b.Enabled)),
				tree.NewDInt(tree.DInt(b.ArgOpt)),
			}
			rows = append(rows, row)
		}

		// system.bo_white_list
		if err := WriteKWDBDesc(ctx, txn, sqlbase.BoBlackListTable, rows, overWrite); err != nil {
			return err
		}
	}
	return nil
}

// UpdateWhiteListMap updates bo_white_list to map
func UpdateWhiteListMap(
	ctx context.Context, txn *kv.Txn, ie sqlutil.InternalExecutor, wl *sqlbase.WhiteListMap,
) error {
	wl.Map = make(map[uint32]sqlbase.FilterInfo, 0)
	const selectStmt = `select name, arg_num, arg_type, position, enabled, arg_opt from system.bo_black_list`
	rows, err := ie.Query(
		ctx, `select white_list`, txn, selectStmt)
	if err != nil {
		return err
	}

	wl.Mu.Lock()
	var buffer bytes.Buffer
	for _, row := range rows {
		buffer.WriteString(string(tree.MustBeDString(row[0])))
		for _, t := range tree.MustBeDArray(row[2]).Array {
			buffer.WriteString(strconv.Itoa(int(tree.MustBeDInt(t))))
		}
		key := memo.StringHash(buffer.String())
		buffer.Reset()
		wl.Map[key] = sqlbase.FilterInfo{Pos: uint32(tree.MustBeDInt(row[3])), Typ: uint32(tree.MustBeDInt(row[5]))}
	}
	wl.Mu.Unlock()
	return nil
}

// SQLAddWhiteList adds data to bo_white_list.
var SQLAddWhiteList = settings.RegisterStringSetting(
	"sql.add_white_list",
	"add data to white_list",
	"",
)

// SQLDelWhiteList deletes data to bo_white_list.
var SQLDelWhiteList = settings.RegisterStringSetting(
	"sql.delete_white_list",
	"del data to white_list",
	"",
)

// InitTSMetaData initializes some metadata required by TS database into the system table.
func InitTSMetaData(
	ctx context.Context, db *kv.DB, ie sqlutil.InternalExecutor, execCfg *ExecutorConfig,
) error {
	if err := db.Txn(ctx, func(ctx context.Context, txn *kv.Txn) error {
		// init bo_white_list
		var boWhiteListMap sqlbase.WhiteListMap
		execCfg.TSWhiteListMap = &boWhiteListMap
		if err := WriteWhiteListDesc(ctx, txn, ie, execCfg.NodeID.Get(), InitWhiteList, false); err != nil {
			return err
		}

		// update bo_white_list
		if err1 := UpdateWhiteListMap(ctx, txn, ie, &boWhiteListMap); err1 != nil {
			return err1
		}
		execCfg.TSWhiteListMap = &boWhiteListMap
		return nil
	}); err != nil {
		return err
	}

	return nil
}

// InitCompressInterval sends compress interval to AE when server start
func InitCompressInterval(ctx context.Context, ie sqlutil.InternalExecutor) error {
	const selectStmt = `select schedule_name,schedule_expr from system.scheduled_jobs`
	rows, err := ie.Query(ctx, `select compress interval`, nil, selectStmt)
	if err != nil {
		return err
	}
	for _, row := range rows {
		name := string(tree.MustBeDString(row[0]))
		if name == ScheduleCompress || name == ScheduleVacuum {
			scheduleExpr := string(tree.MustBeDString(row[1]))
			expr, err := cronexpr.Parse(scheduleExpr)
			if err != nil {
				return err
			}
			// get new compress or vacuum interval
			var duration int64
			nextTime1 := expr.Next(timeutil.Now())
			nextTime2 := expr.Next(nextTime1)
			nextTime3 := expr.Next(nextTime2)
			duration1 := nextTime2.Sub(nextTime1) / time.Second
			duration2 := nextTime3.Sub(nextTime2) / time.Second
			if duration2 > duration1 {
				duration = int64(duration2)
			} else {
				duration = int64(duration1)
			}
			if name == ScheduleCompress {
				tse.SetCompressInterval(strconv.AppendInt([]byte{}, duration, 10))
			} else {
				tse.SetVacuumInterval(strconv.AppendInt([]byte{}, duration, 10))
			}
			return nil
		}
	}
	log.Error(ctx, "Can not find compress interval from system catalog at init stage")
	return nil
}

// ScheduleDetail schedule detail
type ScheduleDetail struct {
	Name     string
	Executor string
	CronExpr string
}

// Schedules all currently supported schedules
var Schedules = map[string]ScheduleDetail{
	ScheduleVacuum: {
		Name:     ScheduleVacuum,
		Executor: VacuumExecutorName,
		CronExpr: "@hourly",
	},
}

// InitScheduleForKWDB inits schedules
func InitScheduleForKWDB(ctx context.Context, db *kv.DB, ie sqlutil.InternalExecutor) error {
	return db.Txn(ctx, func(ctx context.Context, txn *kv.Txn) error {
		const selectStmt = `select schedule_name from system.scheduled_jobs`
		rows, err := ie.Query(
			ctx, `select scheduled_jobs`, txn, selectStmt)
		if err != nil {
			return err
		}
		sches := make(map[string]ScheduleDetail, len(Schedules))
		for name, sch := range Schedules {
			sches[name] = sch
		}
		for _, row := range rows {
			delete(sches, string(tree.MustBeDString(row[0])))
		}
		for _, sched := range sches {
			schedule := jobs.NewScheduledJob(scheduledjobs.ProdJobSchedulerEnv)
			schedule.SetScheduleLabel(sched.Name)
			schedule.SetOwner(security.NodeUser)
			expr, err := cronexpr.Parse(sched.CronExpr)
			if err != nil {
				return errors.Wrapf(err, "parsing schedule expression: %q", sched.CronExpr)
			}
			schedule.SetNextRun(expr.Next(scheduledjobs.ProdJobSchedulerEnv.Now()))
			schedule.SetScheduleDetails(jobspb.ScheduleDetails{Wait: jobspb.ScheduleDetails_SKIP, OnError: jobspb.ScheduleDetails_RETRY_SCHED})
			if err := schedule.SetSchedule(sched.CronExpr); err != nil {
				return err
			}
			schedule.SetExecutionDetails(sched.Executor, jobspb.ExecutionArguments{})
			err = schedule.Create(ctx, ie, txn)
			if err != nil {
				return err
			}
		}
		return nil
	})
}

// InitTsTxnJob creates a handle ts txn job when server start.
func InitTsTxnJob(
	ctx context.Context, db *kv.DB, ie sqlutil.InternalExecutor, registry *jobs.Registry,
) error {
	return db.Txn(ctx, func(ctx context.Context, txn *kv.Txn) error {
		stmt := `select job_type, status from kwdb_internal.jobs`
		rows, err := ie.Query(
			ctx, `select jobs`, txn, stmt)
		if err != nil {
			return err
		}
		for _, row := range rows {
			// if there is already arunning job, do nothing
			if tree.MustBeDString(row[0]) == "TS TXN" && tree.MustBeDString(row[1]) == "running" {
				return nil
			}
		}
		// Create a Job to handle ts txn record.
		tsTxnDetail := jobspb.TsTxnDetails{}
		jobRecord := jobs.Record{
			Description:   "handle ts txn record",
			Username:      "root",
			Details:       tsTxnDetail,
			Progress:      jobspb.TsTxnProgress{},
			NonCancelable: true,
		}
		_, err = registry.CreateJobWithTxn(ctx, jobRecord, txn)
		if err != nil {
			return err
		}
		return nil

	})
}

// createTSSchemaChangeJob creates a new job to synchronize the metadata cache with the agent.
func (p *planner) createTSSchemaChangeJob(
	ctx context.Context, details jobspb.SyncMetaCacheDetails, jobDesc string, txn *kv.Txn,
) (int64, error) {
	// Queue a new job.
	jobRecord := jobs.Record{
		Description: jobDesc,
		Username:    p.User(),
		Details:     details,
		Progress:    jobspb.SyncMetaCacheProgress{},
		// ts schema change job can not be canceled
		NonCancelable: true,
	}
	job, err := p.extendedEvalCtx.ExecCfg.JobRegistry.CreateJobWithTxn(ctx, jobRecord, txn)
	//job, err := p.extendedEvalCtx.QueueJob(jobRecord)
	if err != nil {
		return 0, err
	}
	return *job.ID(), err
}
